<?php
/**
 * 微信推送事件消息处理
 * @App	
 * @Group 
 * @Action WeChatReceive
 * @author lilei
 * @date 2018年8月21日
 *
 */
namespace app\common\service\wechat;
class WeChatReceive extends WeChatService {
	/**
	 * wechat操作句柄
	 * @var object | \WeChat\Receive
	 */
	private $handle;
	
	/**
	 * 消息类型:文本
	 * @var string
	 */
	const MSGTYPE_TEXT = 'text';
	
	/**
	 * 消息类型:事件
	 * @var string
	 */
	const MSGTYPE_EVENT = 'event';
	
	/**
	 * 消息类型:图片
	 * @var string
	 */
	const MSGTYPE_IMAGE = 'image';
	
	/**
	 * 消息类型:音频
	 * @var string
	 */
	const MSGTYPE_VOICE = 'voice';
	
	/**
	 * 消息类型:视频
	 * @var string
	 */
	const MSGTYPE_VIDEO = 'video';
	
	/**
	 * 消息类型:短视频
	 * @var string
	 */
	const MSGTYPE_SHORT_VIDEO = 'shortvideo';
	
	/**
	 * 消息类型: 地理位置
	 * @var string
	 */
	const MSGTYPE_LOCATION = 'location';
	
	/**
	 * 消息类型: 链接
	 * @var string
	 */
	const MSGTYPE_LINK = 'link';
	
	/**
	 * 事件: 订阅 或者 用户未关注时，进行关注后的事件推送
	 * @var string
	 */
 	const EVENT_SUBSCRIBE = 'subscribe';
 	
 	/**
 	 * 事件: 取消订阅
 	 * @var string
 	 */
 	const EVENT_UNSUBSCRIBE = 'unsubscribe';
 	
 	/**
 	 * 事件: 用户已关注时的事件推送
 	 * @var string
 	 */
 	const EVENT_SCAN = 'scan';
 	
 	/**
 	 * 事件: 上报地理位置事件
 	 * @var string
 	 */
 	const EVENT_LOCATION = 'location';
 	
 	/**
 	 * 事件: 点击菜单拉取消息时的事件推送
 	 * @var string
 	 */
 	const EVENT_CLICK = 'click';
 	
 	/**
 	 * 事件: 点击菜单跳转链接时的事件推送
 	 * @var string
 	 */
 	const EVENT_VIEW = 'view';
	
	/**
	 * 初始化方法
	 * {@inheritDoc}
	 * @see WeChatService::__init()
	 */
	public function __init() {
		$this->handle = new \WeChat\Receive(self::$option);
	}
	
	/**
	 * 回复一条文本消息
	 * @param string $content
	 */
	public function replyText( $content ) {
		$this->handle->text( $content )->reply();
	}
	
	/**
	 * 回复一条图片消息
	 * @param string $media_id 素材编号
	 */
	public function replyImage ( $media_id ) {
		$this->handle->image( $media_id )->reply();
	}
	
	/**
	 * 获取公众号推送对象
	 * @param null|string $field 指定获取字段
	 * @return string
	 */
	public function getReceive($field = null)
	{
		return $this->handle->getReceive($field);
	}
	
	/**
	 * 获取事件类型名称
	 */
	public function getEvent() {
		return $this->getReceive('Event');
	}
	
	/**
	 * 获取当前微信OPENID
	 * @return string
	 */
	public function getOpenid()
	{
		return $this->handle->getOpenid( );
	}
	
	/**
	 * 获取当前推送消息类型
	 * @return string
	 */
	public function getMsgType()
	{
		return $this->handle->getMsgType( );
	}
	
	/**
	 * 获取当前推送消息ID
	 * @return string
	 */
	public function getMsgId()
	{
		return $this->handle->getMsgId( );
	}
	
	/**
	 * 获取当前推送时间
	 * @return integer
	 */
	public function getMsgTime()
	{
		return $this->handle->getMsgTime( );
	}
	
	/**
	 * 获取当前推送公众号
	 * @return string
	 */
	public function getToOpenid()
	{
		return $this->handle->getToOpenid( );
	}
	
	
}